package com.hlkj.pay.vo.merchant.resp.access;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import com.hlkj.framework.common.valid.EnumValid;
import com.hlkj.framework.common.valid.HlkjDateValid;
import com.hlkj.pay.enums.CommonEnum;
import com.hlkj.pay.enums.MerchantEnum;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
* 商户进件结算表
* @TableName t_merchant_access_card
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MerchantAccessCardResp  {
    /**
    * 账号类型 0：对公账户 1：对私法人账户 2：对私非法人账户
    */
    @NotNull(message="账号类型 不能为空")
    @Schema(description ="账号类型 0：对公账户 1：对私法人账户 2：对私非法人账户")
    @EnumValid(value = MerchantEnum.CARD_TYPE.class,message = "账号类型 无效")
    private Integer type;
    /**
    * 账号名称
    */
    @Schema(description ="账号名称")
    @NotEmpty(message="账号名称 不能为空")
    private String name;
    /**
    * 账号code
    */
    @Schema(description ="银行账号")
    @NotEmpty(message="银行账号 不能为空")
    private String cardNo;
    /**
    * 银行编码
    */
    @Schema(description ="银行编码  字典接口通过 dictKey=bankCode 获取")
    private String bankCode;
    /**
     * 银行名称
     */
    @Schema(description ="银行名称")
    private String bankName;
    /**
    * 联行号
    */
    @Schema(description ="联行号")
    private String branchCode;
    
    /**
     * 对公卡账号名称
     */
    @Schema(description ="对公卡账号名称")
    private String officialName;
    /**
     * 对公卡账号code
     */
    @Schema(description ="对公卡银行账号")
    private String officialCardNo;
    /**
     * 对公卡银行编码
     */
    @Schema(description ="对公卡银行编码  字典接口通过 dictKey=bankCode 获取")
    private String officialBankCode;
    /**
     * 对公卡银行名称
     */
    @Schema(description ="对公卡银行名称")
    private String officialBankName;
    /**
     * 对公卡联行号
     */
    @Schema(description ="对公卡联行号")
    private String officialBranchCode;
    /**
     * 对公卡省份编码
     */
    @Schema(description ="对公卡省份编码")
    private String officialProvinceCode;
    /**
     * 对公卡城市编码
     */
    @Schema(description ="对公卡城市编码")
    private String officialCityCode;
    /**
     * 对公卡区域编码
     */
    @Schema(description ="对公卡区域编码")
    private String officialAreaCode;
    /**
    * 证件类型
    */
    @Schema(description ="证件类型 字典接口通过 dictKey=certType获取")
    private String certType;
    /**
    * 身份证正面url
    */
    @Schema(description ="身份证正面url")
    private String certFrontUrl;
    /**
    * 身份证反面url
    */
    @Schema(description ="身份证反面url")
    private String certBackUrl;
    /**
    * 身份证号码
    */
    @Schema(description ="身份证号码")
    private String certNo;
    /**
    * 证件有效期类型 1：长期有效；0：非长期有效 
    */
    @Schema(description ="证件有效期类型 1：长期有效；0：非长期有效 ")
    @EnumValid(value = CommonEnum.YES_NO_TYPE.class,message = "证件有效期类型无效")
    private Integer certValidityType;
    /**
    * 有效期开始日期
    */
    @Schema(description ="有效期开始日期")
    @HlkjDateValid(message = "有效期开始日期 格式非yyyy-MM-dd")
    private String certBeginDate;
    /**
    * 有效期截止日期
    */
    @Schema(description ="有效期截止日期")
    @HlkjDateValid(message = "有效期截止日期 格式非yyyy-MM-dd")
    private String certEndDate;
    /**
    * 省份编码
    */
    @Schema(description ="省份编码 省份编码 字典接口通过 dictKey=areaCode,dictLevel=1 获取")
    @NotEmpty(message="省份编码 不能为空")
    private String provinceCode;
    /**
    * 城市编码
    */
    @Schema(description ="城市编码 字典接口通过 dictKey=areaCode,parentDictKey=provinceCode,dictLevel=2 获取 ")
    @NotEmpty(message="城市编码 不能为空")
    private String cityCode;
    /**
    * 区域编码
    */
    @Schema(description ="区域编码 字典接口通过 dictKey=areaCode,parentDictKey=cityCode,dictLevel=3 获取 ")
    private String areaCode;
    /**
    * 地址
    */
    @Schema(description ="地址")
    private String address;
    /**
    * 银行卡绑定手机号
    */
    @Schema(description ="银行卡绑定手机号")
    private String cardPhone;
    
    /**
     * 结算卡正面url
     */
    @Schema(description ="结算卡正面url")
    private String settleCardFrontUrl;
    /**
     * 持卡人身份证正面url
     */
    @Schema(description ="持卡人身份证正面url")
    private String settleCertFrontUrl;
    /**
     * 持卡人身份证反面url
     */
    @Schema(description ="持卡人身份证反面url")
    private String settleCertBackUrl;
    /**
     * 开户许可证url
     */
    @Schema(description ="开户许可证url")
    private String licenseUrl;
    /**
     * 开户许可证编号
     */
    @Schema(description ="开户许可证编号")
    private String licenseNo;
    /**
     * 授权委托书url
     */
    @Schema(description ="授权委托书url")
    private String authUrl;
    @NotNull(message="[结算周期]不能为空")
    @Schema(description ="结算周期 1:D0-当天 2:D1-下一个自然日 3:T1-下一个工作日 4:手动结算")
    @EnumValid(value = MerchantEnum.SETTLE_CYCLE.class,message = "结算周期 无效")
    private Integer settleCycle;
    
}
